<?php
require_once('DataAccess.php');
require_once('PlanoInterno.php');

/**
Interface DAO de Programa. Estes m�todos N�O devem ser chamados diretamente.
Ao inv�s disso devem ser chamados por m�todos da classe Programa.
*/

class PlanoInternoDAO{
	
	  private $database;
	
 	  public function getConnection(){
      	return $this->database;
      }
	  
      public function __construct()
      {
               $this->database = DataAccess::getConnection();
      }
      
	  public function  CadastrarPlanoInterno( $planoInterno )
      {

      	$consulta = $this->database->Fetch("BEGIN");
      	
      	if ( $consulta )
      	{
    
      		$programa = $planoInterno->programa;
      		$consulta = $this->database->Fetch("INSERT into t_plano_interno (codigo , titulo, descricao , t_programa_id)
      											VALUES('$planoInterno->cod' ,'$planoInterno->titulo', '$planoInterno->descricao','$programa->id')");
      		if( $consulta )
      		{
 
      			$this->database->Fetch("COMMIT");
      			return TRUE;
      		} 
      		else
      		{
      			$this->database->Fetch("ROLLBACK");
      			return FALSE;
      		}
      	}
      	else
      	{
      		$this->database->Fetch("ROLLBACK");
      		return FALSE;
      	}
      		
      }
      
      public function ConsultarCodExistente($cod){
      	$consulta = $this->database->Fetch(" SELECT * FROM t_plano_interno WHERE codigo = '$cod'");
      	if( $consulta != FALSE && mysql_num_rows( $consulta ) > 0 ){
      		return true;
      	}else{
      		return false;
      	}
      }
      
	 public function ArrayParaObjetos($array){
      	$planoInterno = new PlanoInterno();
      	$planoInterno->cod = $array['codigo'];
      	$planoInterno->titulo = $array['titulo'];
      	$planoInterno->descricao = $array['descricao'];
      	$programaDao = new Programa();
      	$planoInterno->programa = $programaDao->CarregarPrograma($array['t_programa_id']);
      	return $planoInterno;
      }
      
      public function ConsultarTodos(){
      	$consulta = $this->database->Fetch("SELECT * FROM t_plano_interno");
      	if( $consulta != FALSE && mysql_num_rows( $consulta ) > 0 ){
      		$rows = $this->database->getRow();
      		$planoInternoArray = array();
      		foreach($rows as $array){
      			$planoInternoArray[] = $this->ArrayParaObjetos($array);

      		}

      		return $planoInternoArray;
      	}else{
      		return false;
      	}
      }
      
      public function ConsultarPorAcao($acaoId){
	      	$consulta = $this->database->Fetch("SELECT * FROM t_plano_interno WHERE t_programa_id = $acaoId");
	      	if( $consulta != FALSE && mysql_num_rows( $consulta ) > 0 ){
	      		$rows = $this->database->getRow();
	      		$planoInternoArray = array();
	      		foreach($rows as $array){
	      			$planoInternoArray[] = $this->ArrayParaObjetos($array);
	      		}
	      		return $planoInternoArray;
	      	}else{
	      		return false;
	      	}
      }
      
      public function ConsultarPorCodigo($cod){
      $consulta = $this->database->Fetch("SELECT * FROM t_plano_interno WHERE codigo = '$cod'");
	      	if( $consulta != FALSE && mysql_num_rows( $consulta ) > 0 ){
	      		$rows = $this->database->getRow();
	      		$planoInternoObj = $this->ArrayParaObjetos($rows[0]);
	      		return $planoInternoObj;
	      	}else{
	      		return false;
	      	}
      }
      
      public function ConsultarReservaAssociada($cod){
         $consulta = $this->database->Fetch("SELECT * FROM t_reserva WHERE t_plano_interno_cod = '$cod'");
	      	if( $consulta != FALSE && mysql_num_rows( $consulta ) > 0 ){
	      		return true;
	      	}else{
	      		return false;
	      	}
      }
      
      public function ExcluirPorCod($cod){
      $consulta = $this->database->Fetch("BEGIN");
      	
      	if( $consulta )
      	{
      		$consulta = $this->database->Fetch("DELETE FROM t_plano_interno WHERE codigo = '$cod'");
      		
      		if ( $consulta )
      		{
      			$this->database->Fetch("COMMIT");
      			return false;
      		}
      		else
      		{
      			$this->database->Fetch("ROLLBACK");
      			return false;
      		}
      	}
      	else
      	{
      		$this->database->Fetch("ROLLBACK");
      		return false;
      	}
      }
	
}
?>